/**
 ****************************************************************************************
 *
 * @file timer.h
 *
 * @brief TIMER Driver.
 *
 * Copyright (C) RivieraWaves 2009-2015
 *
 *
 ****************************************************************************************
 */

#ifndef _TIMER_H_
#define _TIMER_H_

/**
 ****************************************************************************************
 * @defgroup TIMER
 * @ingroup DRIVERS
 *
 * @brief Timer driver
 *
 * @{
 *
 ****************************************************************************************
 */

/*
 * INCLUDE FILES
 ****************************************************************************************
 */
#include <stdint.h>      // standard integer definition
#include <stdbool.h>
/*
 * ENUMERATION DEFINITIONS
 *****************************************************************************************
 */
#define HL_GROSSTARGET_MASK 0x00FFFFFF
/*
 * FUNCTION DECLARATIONS
 ****************************************************************************************
 */

/**
 ****************************************************************************************
 * @brief Initialize the timer1 as a count-down counter at 13MHz
 *
 ****************************************************************************************
 */
void timer_init(void);

/**
 ****************************************************************************************
 * @brief Set when the timer should expires
 *
 * @param to timeout value
 *
 ****************************************************************************************
 */
void timer_set_timeout(uint32_t to);


/**
 ****************************************************************************************
 * @brief control timer
 *
 * @param enable True to enable the timer, false to disable it
 *
 ****************************************************************************************
 */
void timer_enable(bool enable);

/**
 ****************************************************************************************
 * @brief Retrieve current time
 *
 * @return  current time in 10us step
 *
 ****************************************************************************************
 */
uint32_t timer_get_time(void);


/// @} TIMER

#endif /* _TIMER_H_ */
